//统一处理table的数据和请求处理
import { ref, reactive, unref } from "vue";
import type { Ref } from "vue";
//api必传
//queryParams可选参数:
function roleTable<P,R extends{
    list:any;
    pageNum:number;
    pageSize:number;
    total:number;
    totalPage:number
}>(api:(data?:P) => Promise<R>,queryparams?:P){
//获取data的列表数据
let tableData:Ref<R['list']> = ref([]);
let total:Ref<number> = ref(0)
async function getTableData() {
    // console.log(queryparams);// 传过来的queryParams 已经变成 ref 类型
    // 定义一个普通的对象 ，遍历queryParams并将每一个key和value赋值给这个对象，得到一个新对象
    let normalQueryParams = { } as P;
    if(typeof queryparams === 'object'){
        for(let key in queryparams){
            // console.log(key);
            //unref 可以直接将相应式转为普通数据
            normalQueryParams[key] = unref(queryparams[key]);
        }
    }
    //发送请求
    let result = await api({
        ...normalQueryParams
    })
    // console.log(result);
    tableData.value = result.list
    total.value = result.total
}
return {
    getTableData,
    tableData,
    total
}
}
export default roleTable